package br.com.vti.sisp_sicrim.antigo.model;

import java.io.Serializable;
import java.sql.ResultSet;
import java.sql.SQLException;

import br.com.vti.sisp_sicrim.antigo.dao.SicCadnovoDAO;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;

@SuppressWarnings("serial")
public class SicCadnovo implements Serializable {

	private String id = "";
	private String tipoRg = "";
	private Long numeroRg = 0L;
	private String uf = "";
	private String nomePessoa = "";
	private String nomePai = "";
	private String nomeMae = "";
	private Integer dataReg = 0;
	private Integer olddataReg = 0; // ctrl quebra
	private Integer dataNasc = 0;
	private Integer matriculaFuncAtu = 0;
	private Integer dataDocAtu = 0;
	private Integer horaAtu = 0;
	private String naturalidade = "";
	private Integer codigoNaturalidade = 0;
	private String orgaoExpNaturalidade = "";
	private Integer nacionEstrangeira = 0;
	private String dataUltimaMoviment = "";
	private String possuiProcesso = "";
	private String logradouro = "";
	private Integer numero = 0;
	private String bairro = "";
	private Integer municipio = 0;
	private String estado = "";
	private Integer cep = 0;
	private String complemento = "";
	private String passaporte = "";
	private Integer numeroPosto = 0;
	private ResultSet consulta = null;
	private SicCadnovoDAO sicCadnovoDAO = new SicCadnovoDAO();

	public SicCadnovo() {
		super();
	}

	public SicCadnovo(String id, String tipoRg, Long numeroRg, String uf, String nomePessoa, String nomePai, String nomeMae, Integer dataReg, Integer dataNasc, Integer matriculaFuncAtu, Integer dataDocAtu, Integer horaAtu, String naturalidade, Integer codigoNaturalidade, String orgaoExpNaturalidade, Integer nacionEstrangeira, String dataUltimaMoviment, String possuiProcesso, String logradouro, Integer numero, String bairro, Integer municipio, String estado, Integer cep, String complemento, String passaporte, Integer numeroPosto) {
		super();
		this.id = id;
		this.tipoRg = tipoRg;
		this.numeroRg = numeroRg;
		this.uf = uf;
		this.nomePessoa = nomePessoa;
		this.nomePai = nomePai;
		this.nomeMae = nomeMae;
		this.dataReg = dataReg;
		this.dataNasc = dataNasc;
		this.matriculaFuncAtu = matriculaFuncAtu;
		this.dataDocAtu = dataDocAtu;
		this.horaAtu = horaAtu;
		this.naturalidade = naturalidade;
		this.codigoNaturalidade = codigoNaturalidade;
		this.orgaoExpNaturalidade = orgaoExpNaturalidade;
		this.nacionEstrangeira = nacionEstrangeira;
		this.dataUltimaMoviment = dataUltimaMoviment;
		this.possuiProcesso = possuiProcesso;
		this.logradouro = logradouro;
		this.numero = numero;
		this.bairro = bairro;
		this.municipio = municipio;
		this.estado = estado;
		this.cep = cep;
		this.complemento = complemento;
		this.passaporte = passaporte;
		this.numeroPosto = numeroPosto;
	}

	public void grava() {

		try {
			this.id = sicCadnovoDAO.insert(tipoRg, numeroRg, uf, nomePessoa, nomePai, nomeMae, dataReg, dataNasc, matriculaFuncAtu, dataDocAtu, horaAtu, naturalidade, codigoNaturalidade, orgaoExpNaturalidade, nacionEstrangeira, dataUltimaMoviment, possuiProcesso, logradouro, numero, bairro, municipio, estado, cep, complemento, passaporte, numeroPosto);
		} catch (Exception e) {
			throw new ExceptionProgram(e, null, "");
		}
	}

	public void atualiza() {

		try {
			sicCadnovoDAO.update(this.id, tipoRg, numeroRg, uf, nomePessoa, nomePai, nomeMae, dataReg, dataNasc, matriculaFuncAtu, dataDocAtu, horaAtu, naturalidade, codigoNaturalidade, orgaoExpNaturalidade, nacionEstrangeira, dataUltimaMoviment, possuiProcesso, logradouro, numero, bairro, municipio, estado, cep, complemento, passaporte, numeroPosto);
		} catch (Exception e) {
			throw new ExceptionProgram(e, null, "");
		}
	}

	public void exclui() {

		try {
			sicCadnovoDAO.delete(this.id);
		} catch (Exception e) {
			throw new ExceptionProgram(e, null, "");
		}
	}

	public boolean pesquisaTipoRgClas(String pTipoRg) {

		try {
			if (consulta == null) {
				consulta = sicCadnovoDAO.findTipoRgasc(pTipoRg);
			} else {
				consulta = sicCadnovoDAO.pesquisaProximo();
			}
			if (consulta == null) {
				fecha();
				return false;
			}
			formataAtributos(consulta);
		} catch (Exception e) {
			throw new ExceptionProgram(e, null, "");
		}
		return true;
	}

	public boolean leituraDataRegFaixa(long pDataReg1, long pDataReg2) {

		try {
			if (consulta == null) {
				consulta = sicCadnovoDAO.readDataRegin(pDataReg1, pDataReg2);
			} else {
				consulta = sicCadnovoDAO.pesquisaProximo();
			}
			if (consulta == null) {
				fecha();
				return false;
			}
			formataAtributos(consulta);
		} catch (Exception e) {
			throw new ExceptionProgram(e, null, "");
		}
		return true;
	}

	public boolean consultaNumeroRg(Long pNumeroRg) {

		try {
			if (consulta == null) {
				consulta = sicCadnovoDAO.selectNumeroRg(pNumeroRg);
			} else {
				consulta = sicCadnovoDAO.pesquisaProximo();
			}
			if (consulta == null) {
				fecha();
				return false;
			}
			formataAtributos(consulta);
		} catch (Exception e) {
			throw new ExceptionProgram(e, null, "");
		}
		return true;
	}

	public boolean fimDados() {
		return !(sicCadnovoDAO.temProximo());
	}

	public void salvarQuebras() {

		olddataReg = dataReg;
	}

	public void formataAtributos(ResultSet lista) {

		if (lista == null)
			return;
		salvarQuebras();
		try {
			this.id = lista.getString("id");
			this.tipoRg = lista.getString("tipoRg");
			this.numeroRg = lista.getLong("numeroRg");
			this.uf = lista.getString("uf");
			this.nomePessoa = lista.getString("nomePessoa");
			this.nomePai = lista.getString("nomePai");
			this.nomeMae = lista.getString("nomeMae");
			this.dataReg = lista.getInt("dataReg");
			this.dataNasc = lista.getInt("dataNasc");
			this.matriculaFuncAtu = lista.getInt("matriculaFuncAtu");
			this.dataDocAtu = lista.getInt("dataDocAtu");
			this.horaAtu = lista.getInt("horaAtu");
			this.naturalidade = lista.getString("naturalidade");
			this.codigoNaturalidade = lista.getInt("codigoNaturalidade");
			this.orgaoExpNaturalidade = lista.getString("orgaoExpNaturalidade");
			this.nacionEstrangeira = lista.getInt("nacionEstrangeira");
			this.dataUltimaMoviment = lista.getString("dataUltimaMoviment");
			this.possuiProcesso = lista.getString("possuiProcesso");
			this.logradouro = lista.getString("logradouro");
			this.numero = lista.getInt("numero");
			this.bairro = lista.getString("bairro");
			this.municipio = lista.getInt("municipio");
			this.estado = lista.getString("estado");
			this.cep = lista.getInt("cep");
			this.complemento = lista.getString("complemento");
			this.passaporte = lista.getString("passaporte");
			this.numeroPosto = lista.getInt("numeroPosto");
		} catch (SQLException e) {
		}
	}

	public boolean quebraNovodatareg() {

		return olddataReg != dataReg;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getTipoRg() {
		return tipoRg;
	}

	public void setTipoRg(String tipoRg) {
		this.tipoRg = tipoRg;
	}

	public Long getNumeroRg() {
		return numeroRg;
	}

	public void setNumeroRg(Long numeroRg) {
		this.numeroRg = numeroRg;
	}

	public String getUf() {
		return uf;
	}

	public void setUf(String uf) {
		this.uf = uf;
	}

	public String getNomePessoa() {
		return nomePessoa;
	}

	public void setNomePessoa(String nomePessoa) {
		this.nomePessoa = nomePessoa;
	}

	public String getNomePai() {
		return nomePai;
	}

	public void setNomePai(String nomePai) {
		this.nomePai = nomePai;
	}

	public String getNomeMae() {
		return nomeMae;
	}

	public void setNomeMae(String nomeMae) {
		this.nomeMae = nomeMae;
	}

	public Integer getDataReg() {
		return dataReg;
	}

	public void setDataReg(Integer dataReg) {
		this.dataReg = dataReg;
	}

	public Integer getDataNasc() {
		return dataNasc;
	}

	public void setDataNasc(Integer dataNasc) {
		this.dataNasc = dataNasc;
	}

	public Integer getMatriculaFuncAtu() {
		return matriculaFuncAtu;
	}

	public void setMatriculaFuncAtu(Integer matriculaFuncAtu) {
		this.matriculaFuncAtu = matriculaFuncAtu;
	}

	public Integer getDataDocAtu() {
		return dataDocAtu;
	}

	public void setDataDocAtu(Integer dataDocAtu) {
		this.dataDocAtu = dataDocAtu;
	}

	public Integer getHoraAtu() {
		return horaAtu;
	}

	public void setHoraAtu(Integer horaAtu) {
		this.horaAtu = horaAtu;
	}

	public String getNaturalidade() {
		return naturalidade;
	}

	public void setNaturalidade(String naturalidade) {
		this.naturalidade = naturalidade;
	}

	public Integer getCodigoNaturalidade() {
		return codigoNaturalidade;
	}

	public void setCodigoNaturalidade(Integer codigoNaturalidade) {
		this.codigoNaturalidade = codigoNaturalidade;
	}

	public String getOrgaoExpNaturalidade() {
		return orgaoExpNaturalidade;
	}

	public void setOrgaoExpNaturalidade(String orgaoExpNaturalidade) {
		this.orgaoExpNaturalidade = orgaoExpNaturalidade;
	}

	public Integer getNacionEstrangeira() {
		return nacionEstrangeira;
	}

	public void setNacionEstrangeira(Integer nacionEstrangeira) {
		this.nacionEstrangeira = nacionEstrangeira;
	}

	public String getDataUltimaMoviment() {
		return dataUltimaMoviment;
	}

	public void setDataUltimaMoviment(String dataUltimaMoviment) {
		this.dataUltimaMoviment = dataUltimaMoviment;
	}

	public String getPossuiProcesso() {
		return possuiProcesso;
	}

	public void setPossuiProcesso(String possuiProcesso) {
		this.possuiProcesso = possuiProcesso;
	}

	public String getLogradouro() {
		return logradouro;
	}

	public void setLogradouro(String logradouro) {
		this.logradouro = logradouro;
	}

	public Integer getNumero() {
		return numero;
	}

	public void setNumero(Integer numero) {
		this.numero = numero;
	}

	public String getBairro() {
		return bairro;
	}

	public void setBairro(String bairro) {
		this.bairro = bairro;
	}

	public Integer getMunicipio() {
		return municipio;
	}

	public void setMunicipio(Integer municipio) {
		this.municipio = municipio;
	}

	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public Integer getCep() {
		return cep;
	}

	public void setCep(Integer cep) {
		this.cep = cep;
	}

	public String getComplemento() {
		return complemento;
	}

	public void setComplemento(String complemento) {
		this.complemento = complemento;
	}

	public String getPassaporte() {
		return passaporte;
	}

	public void setPassaporte(String passaporte) {
		this.passaporte = passaporte;
	}

	public Integer getNumeroPosto() {
		return numeroPosto;
	}

	public void setNumeroPosto(Integer numeroPosto) {
		this.numeroPosto = numeroPosto;
	}

	public void fecha() {
		sicCadnovoDAO.fecha();
		consulta = null;
	}

	public long registrosProcessados() {
		return sicCadnovoDAO.nroRegistro;
	}

	public long totalRegistros() {
		return sicCadnovoDAO.qtdRegistros;
	}

}
